import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import json

'''
功能：
把面积小于32*32像素的bbox挑出来，以bbox中心为中心，以原图像宽高的1/4为新图像的宽高，
进行截图(截图的边界超出原图的话，则修正到原图内部)，同时把截取图的信息写入一个标记文件（格式同annotation.json)

具体：
1. 截出来的图，命名为aug_img_xxxx_from_yyyyyy(xxxx为顺序号，yyyyyyy为所在的原图序号， 麻烦的话不要后面的from部分也可)
2. 给新图赋予一个image_id(保证不与已有的image_id重复)
3. 将image_id和文件名加入annot_json['images']
4. 计算bbox在新图中的位置，并把image_id及位置加入annot_json['annotations']
'''

root_path = 'D:\\datasets\\chongqing'
train_path = root_path + '\\chongqing1_round1_train1_20191223'
train_img_path = train_path + '\\images\\'

train_json_file = train_path + '\\clean_annotations.json'

with open(train_json_file) as f:
    annot_json = json.load(f)
annot_json.keys()

def cut_img(img_id, cut_x, cut_y, cut_w, cut_h):
    # todo
    pass

def add_annot():
    # todo
    pass

for ann in annot_json['annotations']:
    ann_area = (ann['bbox'][2] * ann['bbox'][3]) ** 0.5
    if ann_area < 32:
        # 计算截取框
        # 截图
        # 增加标注
        pass

